aliaset
Version:
twind monorepo
71 lines (60 loc) • 2.1 kB
JavaScript
import { error } from '@sveltejs/kit'
import { data } from '$lib/documentation'
import { transform, transformFile, extractExcerpt } from '$lib/markdown/transform'
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
const { pages } = await data
const href = '/' + params.slug
const page = pages.get(href)
if (!page) {
throw error(401, 'Not found')
}
const prev = pages.get(page.prev)
const next = pages.get(page.next)
const [description, excerpt, content, badges] = await Promise.all([
page.description || (page.excerpt && extractExcerpt(page.excerpt)),
(page.excerpt && transform(page.excerpt)) || page.description,
transformFile(page.path),
page.package && renderBadges(page.package),
])
const folder = page.package && getFolder(page.package)
return {
section: page.section,
label: page.label,
title: page.title,
description,
excerpt,
badges,
content,
package: page.package,
folder,
playground: page.playground === true ? folder : page.playground,
example: page.example === true ? folder : page.example,
file: page.file,
editLink: page.editLink,
prev: prev && { href: prev.href, label: prev.label, section: prev.section },
next: next && { href: next.href, label: next.label, section: next.section },
}
}
/**
* @param {string} pkg
*/
function renderBadges(pkg) {
const folder = getFolder(pkg)
return transform(
[
`[](https://github.com/tw-in-js/twind/blob/main/LICENSE)`,
`[](https://www.npmjs.com/package/${pkg})`,
`[](https://github.com/tw-in-js/twind/tree/main/packages/${folder})`,
].join(' '),
)
}
/**
* @param {string} pkg
*/
function getFolder(pkg) {
return pkg
.replace(/^([^-]+)-plugin-twind$/, '@twind/with-$1')
.split('/')
.pop()
}